Providing events on a map using an activity ontology for event suggestion

ABSTRACT

Disclosed is a system and method to present events relevant to the user on a map. The system obtains an indication of a user&#39;s location, and a predetermined threshold indicating a distance between the user and an event. The system obtains events that are relevant to the user. Based on the user&#39;s location, and the predetermined threshold, the system determines a second set of events based on the events, where an event in the second set of events is within the predetermined threshold away from the user&#39;s location.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. utility patent applicationSer. No. 17/386,306, filed Jul. 27, 2021, which claims priority to theU.S. provisional patent application Ser. No. 63/195,537 filed Jun. 1,2021, both of which are incorporated herein by reference in theirentirety.

BACKGROUND

Multiple platforms offer suggested events to users. However, thematching of events to users produces a cluttered webpage of multipleevents, without a focal point enabling the user to isolate relevantevents. In addition, the match between the suggested events and theuser's interest can be suboptimal, thus resulting in event suggestionsnot attractive to the users.

BRIEF DESCRIPTION OF THE DRAWINGS

Implementations of the present invention will be described and explainedin detail through the use of the accompanying drawings.

FIG. 1 shows the activity ontology.

FIG. 2 shows a portion of the ontology 100 in FIG. 1 represented as atable.

FIG. 3 shows a user workflow when interacting with the system.

FIGS. 4A, 4B, and 5 show operations that can be performed in theactivity ontology admin console.

FIG. 6 is a flowchart of a method to provide an event feed to a user.

FIG. 7 is a flowchart of a method to present events of interest to auser on a geographical map.

FIGS. 8A-8B show a map displaying events of interest.

FIG. 9 shows icons used for various events.

FIG. 10 shows an event details page.

FIGS. 11A-11B show the user interface enabling a user to filter eventsby date and time.

FIG. 12 is a block diagram that illustrates an example of a computersystem 700 in which at least some operations described herein can beimplemented.

The technologies described herein will become more apparent to thoseskilled in the art from studying the Detailed Description in conjunctionwith the drawings. Embodiments or implementations describing aspects ofthe invention are illustrated by way of example, and the same referencescan indicate similar elements. While the drawings depict variousimplementations for the purpose of illustration, those skilled in theart will recognize that alternative implementations can be employedwithout departing from the principles of the present technologies.Accordingly, while specific implementations are shown in the drawings,the technology is amenable to various modifications.

DETAILED DESCRIPTION

The description and associated drawings are illustrative examples andare not to be construed as limiting. This disclosure provides certaindetails for a thorough understanding and enabling description of theseexamples. One skilled in the relevant technology will understand,however, that the invention can be practiced without many of thesedetails. Likewise, one skilled in the relevant technology willunderstand that the invention can include well-known structures orfeatures that are not shown or described in detail, to avoidunnecessarily obscuring the descriptions of examples.

Disclosed is a system and method to present events, e.g. an event feed,on a map to the user. The system obtains an activity ontology structuredinto multiple hierarchical levels, including a group, an interest, anactivity, and an activity analog. The group includes multiple interests,the interest includes multiple activities, and the activity includesmultiple activity analogs. The system obtains an indication of anactivity of interest to the user and multiple events created by one ormore users of the system or obtained from users of another platform.Each event among the multiple events is tagged with one or moreactivities that describe the event. Among the multiple events, thesystem selects an event that matches the activities of interest to theuser and creates the event feed, including the event for the user.

The system can display the events, such as in the form of the eventfeed, on the map indicating the location of the event relative to thelocation of the user. The system can obtain an indication of a user'sgeographical location by using a positioning system, such as a globalpositioning system (GPS), Wi-Fi triangulation, or a cellulartriangulation. The system can obtain a speed of movement associated withthe user, and a predetermined threshold indicating a length of time,such as 5, 10, or 15 minutes. Based on the user's geographical location,the speed of movement associated with the user and the predeterminedthreshold, the system can determine one or more events that are withinthe predetermined threshold away from the user's geographical locationwhen the user moves at the obtained speed of movement. The system cancreate a map indicating a location of the events that are within 5, 10,or 15 minutes of the user. For example, if the user is walking, thesystem can provide to the user events that are 5 minutes' walkingdistance from the user. In another example, if the user is driving, thesystem can provide to the user events that are within 10 minutes'driving distance from the user. The system can proactively sendnotifications to a user if the user is nearby an event that the systemdetermines is of interest to the user.

The disclosed system and method provide a social technology platformthat combines a social network with an event finding and curationutility. The system is a web and mobile platform that uses an eventfinding utility and social platform to address the universally shareddesires of users to see and do things they enjoy, and the need to spendmore time with friends and family. By expanding the definition of an“activity” to include a wide array of social engagements, the systemprovides the world's most human-centric events platform helping usersengage and interact in the same location. Every event provided by thesystem happens at a location that the user can visit and, upon visitingat the appropriate time, can engage in the event.

The disclosed system also layers a social network on top of the eventsplatform to further add value to users' lives. The disclosed systemenables users to share their availability, interests, and plans in asimple and transparent way. The disclosed system gathers the users'availability, interests, and plans and can analyze the gathered data togain deep insights about the users' social circle. In addition, thesystem can share the insights gained about a particular user with theuser's friends and make the insights actionable. For example, the systemcan determine when the particular user is available and can notify theuser's friends that the particular user is available. The system can askthe friends if they want to make plans with the particular user duringthe time that the particular user is available.

For merchants, the system provides an opportunity to create events inthe system. The system then automatically adds the created events to theevent feed of the users whose interests match the event.

To provide end-users with a uniquely curated feed of events pertinent totheir interests and activity patterns, the system utilizes a dictionaryand a data structure of user-inputted activities and events on thesystem platform. The activities a user selects, as their initialinterests at sign up and throughout their journey, guide the user'sexperience and provide a central value proposition of the system: acurated feed of activities based on user preferences and behaviors. Thesystem can obtain collections of events generated from many differentmethods such as from manual generation, machine learning, tag-basedgeneration, etc. Further, the system can display the events in variousformats including a vertical feed, a horizontal feed, a card stack etc.The display of the events can vary depending on person, location, and/ortime of day.

Providing Events on a Map Using Activity Ontology for Event Suggestion

FIG. 1 shows the activity ontology. The system's activity ontology(“ontology”) 100 provides a classification of activities that isexhaustive. The system is also referred to as the “platform” in thisdescription. The activity ontology 100 is hierarchical and includes thegroup 110, interests 120, activities 130, and activity analogs 140. Thebase level of the hierarchy, the group 110, includes interest 120, whichincludes activities 130, which includes activity analogs 140.

The group 110 has four elements, such as culture, entertainment,lifestyle, physical. The group 110 categorizes interests into aspecific, socially recognizable class of meta-interest. Each group issubdivided into interests 120. There can be approximately 70-90interests in each group. For example, culture can include pets, art,beer, books, cars, coffee, etc. Entertainment can include bar games,board games, comedy, concerts, family fun, etc. Lifestyle can includechildbirth, community activism, luxury, meditation, motorcycles, nomads,etc. Physical can include cycling, golf, extreme sports, hiking, horses,etc. Each interest 120 can have over 300 activities 130. The interest120 groups activities into a specific, socially recognizable class ofmeta-activity. The system uses the interest 120 for interest selectionand activity search.

Each interest 120 can be subdivided into over 300 activities 130. Theactivity 130 corresponds to a specific, singular event type and centralunit of the system's event taxonomy. An event is a user-created event,web scraper aggregated event, or series of events presented to users inthe system's consumer facing applications. For example, the interest“pets” can include activities, such as animal shelter events, breedshows, wild animal watching, pet sitting, etc. The interest “boardgames” can include activities, such as boardgame conventions, boardgamesales, chess tournaments, Go tournaments, etc. The interest “cycling”can include events, such as bike tours, club rides, cycle shop events,road bike sales, etc. The interest “meditation” can include events, suchas stargazing, meditation workshops, mindfulness, etc.

Each activity 130 can have an activity analog 140. The activity analogincludes all possible semantic permutations of a specific activity, suchas semantic equivalents and/or synonyms. For example, the activity “artexhibits” can have activity analogs, such as gallery openings, artexhibits of individual artists, art exhibit in museums, art exhibits,avant-garde/public space art shows, underground art shows, etc.

Every activity belongs to a parent unit of classification (i.e.,interest 120), and child unit activity 130 or activity analog 140. Atthe core of differentiation between activities lies the concept ofuniversal activity identification by users. Using the ontologicalframework of dependence, activities are dependent due to sharedclassification as human social interactions, either with oneself or withothers. Thus, the system's attempts to capture all possible human socialinteractions create an intrinsic universe of dependence. For example, if“running” exists as a possible activity in this framework, so must“cycling,” as they are both activities in the universality of allpossible social conditions of social interaction.

Much of the array of activities individuals and groups participate inhas a high level of hierarchical overlap. One can ride a bicycle duringthe daytime or at night. Indoors or out. Alone or in a small group orwith hundreds of others. Whether it is sunny or a monsoon, blinding heator freezing cold. Much like cycling, many other activities in the systemtaxonomy are possible in a variety of situations and sizes. Thus,creating structure beyond a flat list takes a certain degree ofsubjectivity. One may consider eating a meal at a new restaurant withfriends a “foodie” event and only possible during dinner service. Othersmay be a bit more flexible with meal service time. More complicated isthe definition of this activity. Is it a “foodie” event or simply“dinner”?

Instead of constructing a model with a temporal, diurnal, orexertion-based hierarchy, one was constructed that binned “likeactivities.” This method is subjective and requires extensiveiterations. However, due to the vast number of activities possible onthe platform (500+), activity binning by similar interest is necessary.Without binning, site navigation, activity creation, search, and feedcuration is onerous for the user.

The activity ontology 100 is a core method of classifying and organizingunderstanding of the system usage, as well as providing users withrelevant information as they navigate on and off the platform. Activityontology 100 is a structural framework of activities, activity analogs,interests, groups, and other tagged classifications for each term thatlives in the event paradigm.

The current ontology purpose is two-fold: a reference mechanism foractivity-based inputs and outputs, as well as a guidebook for all thingsrelated to the user activity taxonomy. The ontology includes adictionary of activities. The dictionary is an exhaustive list of allpossible activities a user, such as an individual user or a business,can create, attend, and share with one another. The dictionary includesone table in the activity ontology 100. The dictionary has ahierarchical dependency structure in accordance with ontologicaldependence in order to be used reasonably by end-users. Without thehierarchy, the sheer number of activities to sift through whilecreating, finding, and sharing events would be onerous, and would likelyresult in frustration by most, if not all, end-users.

To access, modify, and tailor activity ontology 100 for particular usergroups, a tool was created for internal staff. This tool, known as theActivity Ontology Admin Console, allows a non-technical user to modify,manage, and monitor the activities ontology. As the system scales, thetool becomes the primary access point for non-technical staff for allactivities on-app. The hierarchy levels 110, 120, 130, 140 can bemodified through the activity ontology admin console. The hierarchiescan be modified by the administrator, or by the machinelearning/artificial intelligence model that can update the ontology 100based on information gathered from various users through the system.

FIG. 2 shows a portion of the ontology 100 in FIG. 1 represented as atable. The ontology 100 can be represented as a table 200 and isscalable. The table 200 shows the groups 110 in FIG. 1 , and some of theinterests in each element of the group. New entries can be added at eachhierarchy level 110, 120, 130, 140 in FIG. 1 . In addition, aprogramming module, such as a Python module, can enable ontology 100versioning and hierarchical bin width routine assessments andmodifications per end-user to and from a relational database, such asPostgreSQL. The ontology versioning can enable storing of previousversions of the ontology 100 as the ontology changes. The ontologyversioning can be used to perform analysis of the user data by relatinguser data to the relevant ontology version.

FIG. 3 shows a user workflow when interacting with the system. Uponlogin, in step 300, the system asks first-time users to providedemographic and geographic information in step 310, and then, in step320, to select one or more interests in each category group 110 in FIG.1 . For example, in step 320, the user can select the followinginterests: bicycles, coffee, hiking, and volleyball. In step 330, theuser can select friends that are users of the system and can group them.Upon completing steps 310-330, the first-time user's workflow matchesthe repeat user's workflow.

In step 330, initially, the system can perform friend grouping duringthe onboarding when the user selects friends from the user's contactlist, such as the user's phone's contact list. Once the user becomes arepeat user, and starts using the system beginning with step 325, theuser can find new friends via events in which the user is interested.For example, the events in which the user is interested can provide alist of attendees to the event, and the user can select friends from theprovided list.

When creating an event, the user can select the users who can see theevent. In one example, when selecting the users who can see the events,the user can select one or more of the following categories “myself, myfriends, and everyone.” In another example, when creating an event, theuser can select certain friends to view an event, instead of “allfriends.” The system can populate the selection of friends by defaultper event based on what the system knows about the event and thefriends' interests, friends' past event attendance, friends' location,etc. The user can choose to edit the pre-populated list as desired.

When the user adds a friend, the user can see all events that the friendis creating and posting on the user's feed. In addition to following theuser's friend network and selected activity interests, the user can alsofollow public figures and influencers who are members of the system.

When the user completes the interest selection, the system provides anevent feed to the user through which the user can scroll. The event feedis a series of activities in the user's geographic area generated from acombination of a web crawler gathering the events available on theInternet and events that are unique to the system, such as events postedby friends of the user and events posted by privileged users. Theprivileged users can be subscription users of the platform, such asbusinesses that want to advertise events at their establishments. Theprivileged users can also be influencers, who are incentivized by thesystem to provide information about events in their area. The webcrawler can gather events from other social platforms, such asEventbrite, Songkick, or Meetup, every couple of minutes. The system canmap the web crawler obtained event onto the activity ontology 100 inFIG. 1 . To map the web crawler obtained event onto the activityontology 100, the system can use natural language processing todetermine a correspondence between an event and an interest 120 in FIG.1 .

The system filters the combination of events through the lens of theinterests that the user has selected. Each event, whether obtained fromthe web crawler or from the system users, has a corresponding interest.An event can have one or more corresponding interests. The interestscorresponding to the event and the user-specified interests are matched.When the event interest matches the user-specified interests, the eventis provided in the event feed to the user.

In step 340, the user can create a new activity in the system. Thesystem can automatically add the activity to a feed of other users. Whenthe user enters the new activity, for example, the new events, the userenters the type of the event, for example, interest. The system canmatch the type of event to the interest of the users and provide theevent to the event feed of the interested users. The event feed isprospective because the event feed provides events happening in thefuture, not events that happened in the past.

In step 350, the user can interact with an existing activity. Theexisting activity can be provided by a user of the system, or can begenerated by a web crawler that scrapes activities from other platforms,such as Facebook, Eventbrite, etc., performs natural language processingon the script activity, and fits the activity into the ontology 100 inFIG. 1 . To interact with the existing activity, the user can RSVP insteps 360, 370, or the user can rate the activity in steps 380, 390.

In step 305, the system allows the user to notify friends when the useris available at a press of a button. For example, the user can indicatethe user is free within a predetermined period of time, such as the next20 minutes, the next half hour, the next hour. The user can alsoindicate the user's location. Consequently, the system notifies theuser's friends of the user's location and period of time when the useris available. The system also presents an accept button to the user'sfriends. If one of the user's friends selects the accept button, thesystem provides the friend and/or the user the ability to create anevent indicating that the friend and the user are spending the timetogether. In step 315, the indication that the user is free can expirewhen the period of time during which the user has indicated availabilityhas expired.

FIGS. 4A-5 show operations that can be performed in the activityontology admin console (“tool”). The tool 400 is a UI for the systemdata scientists and developers to visualize ontology records and theirassociated geographical, temporal, and relational metadata; edit theirontology associations, mobile application presentations, searchability,and language-based attributes; create single or large volumes of newontology records via comma separated values (CSV) file input; and managethe integration of user generated activities. The tool 400 leveragesseveral services, including an Admin API for handling all httpsrequests, authentication, and authorization; an Ontology API forinteracting with a dedicated relational PostgreSQL database network; aningress queueing service to distribute database writes globally; and aprivate Ontology NPM package to standardize the http requests to theOntology API. The admin UI can be authored in Node.js inside a Reactframework, and the admin and ontology APIs can be authored in Node.jswithin an Apollo GraphQL framework.

The tool 400 can contain the following components:

# REQUIREMENT USER STORY ACCEPTANCE CRITERIA 1 Updating, adding, and ‘Asa console user, I need to A. User can select group_name via search barand update the group name. removing groups make changes to activitygroups’ B. User can create a new group that does not exist. C. User willreceive an error if they try to create a group that already exists. D.User can select a group name via search bar and remove the group. Userwill see clear warnings prior to group deletion. E. User will see SystemError when the system restricts the delete action. F. User will see thesuccess message when system allows the delete action. 2 Updating,adding, and ‘As a console user, I need to A. User can selectinterest_name via the system search bar and modify removing interestsmake changes to interests’ interest_name. B. User can create an interestthat does not currently exist in the database. C. User will receive anerror if they attempt to create an interest that already exists in thedatabase. D. User can select an interest name via search. E. User candelete an interest from the database. System will display clear warningprior to deletion. F. User will see System Error if interest deletion isrestricted. G. System will display the success message if interest issuccessfully deleted. 3 Updating, adding, and ‘As a console user, I needto A. User can select activity_name via the system search bar and modifyremoving activities make changes to activities’ interest_name. B. Usercan create an activity that does not currently exist in the database. C.User will receive an error if they attempt to create an activity thatalready exists in the database. D. User can select an activity name viasearch. E. User can delete an activity from the database. System willdisplay clear warning prior to deletion. F. User will see System Errorif activity deletion is restricted. G System will display the successmessage if activity is successfully deleted. 4 Managing interest ‘As aconsole user, I need to A. User can search for a database variable(interest, activity, group) and properties manage variable properties’update/add/remove Boolean outcomes for variable properties (e.g.,physical, after_hours, work_related, min_event_size). 5 Managing localactivity ‘As a console user, I need to be A. User can select an activityand update/add/remove child unit ‘activity dialectical variations ableto create local dialectical analogs’ based on local demographicpronunciation/spelling/terminology activity analogs affixed to parentvariance of parent unit. activity’ B. User can save parent-childrelationship. C. User can search parent(activity)-child(activity analog)relationship. System will display parent-child relationship as well asqueried item. D. User will receive an error if they attempt to create anactivity analog that already exists in the database. E. User can selectan activity analog via search. F. User can delete an activity analogfrom the database. System will display clear warning prior to deletion.G. User will see System Error if activity analog deletion is restricted.H. System will display the success message if activity analog issuccessfully deleted. 6 Assigning uncategorized ‘As a console user, Ineed to map A. User can search for an activity_name via search bar.System displays activities to interests unassigned child units(activities) associated interest_name if association exists. to parentunits (interests)’ B. User can assign an interest if the associationdoes not exist between parent and child units. C. User can delete anactivity-interest association.

External users can access the tool 400 by, for example, using acombination of a Software Development Kit (SDK) and an ApplicationProgramming Interface (API) to create their own applications. The SDKand/or API can access the activity dictionary population, the system'sactivity taxonomy, and the system's activity integration.

In FIGS. 4A-4B, row 410 shows the groups 110, interests 120, andactivities 130. Row 420 shows an element 115 in the groups 110, such asphysical, an element 125 in the interests 120, such as foodies, and anelement 135 in the activities 130, such as camp fires. Row 430 shows howto edit groups 110, interests 120, and activities 130. For example, toedit interests 120, the user can specify attributes of the interest,such as whether the interest is social, alternative, after hours,work-related, physical, high_medium_low, and what is the minimum groupsize. “High, medium, and low” indicates the interest level for aparticular activity. For example, a person who is a runner can have ahigh, a medium, or a low interest in a running event, such as amarathon. For example, if the person is a casual runner, the person'sinterest level for the marathon is low. If the person participates inthe occasional 5K or 10K run, the person's interest level for themarathon is medium, while if the person runs marathons frequently, theperson's interest level in the marathon is high.

FIG. 5 shows how to create a new group, new interest, or new activity inthe system. In step 500, when the user creates a new group, the systemrequests the name for the new group and a message for the new group. Themessage is a description of the interest for ontological classificationand placement. In step 510, the user can create a new interest. Thesystem requests the name, the definition, and the group to which the newinterest belongs. In addition, the system requests an indication ofwhether the interest is social, alternative, after hours, work-related,physical, high_medium_low, and what is the minimum group size. Minimumgroup size indicates the minimum number of participants for the interestto be viable. For example, if the interest is ping-pong, the minimumgroup size is two because ping-pong requires at least two participants.In step 520, the user can add activities. The system can receive aspecification of activities as batches, reading from CSV files thatadhere to a standard format. Alternatively, activities can be added oneat a time by selecting an interest from the drop-down menu and addingthe name of the activity.

FIG. 6 is a flowchart of a method to provide an event feed to a user. Anevent feed is a collection of prospective activities. In block 600, ahardware or software processor executing instructions described in thisapplication can obtain an activity ontology structured into multiplehierarchical levels, including at least three of: a group, an interest,an activity, and an activity analog. The names of the level's group,interest, activity, and activity analog can vary and can also be firstlevel, second level, third level, and fourth level, respectively. Thefirst level (i.e., the group), can include multiple interests. Thesecond level (i.e., the interest), can include multiple activities. Thethird level (i.e., the activity), can include multiple activity analogs.The activity analogs can be the fourth level. The activity analogs caninclude a semantic equivalent of the activity and can vary based on ageographical location of the user. For example, the processor can adjustthe activity analog associated with the activity based on pronunciation,spelling, or dialect associated with the geographical locationassociated with the user, either automatically or by receiving inputfrom the user. Specifically, the activity “bike culture parties” caninclude “polar bears” as an activity analog.

In block 610, the processor can obtain an indication of a user'sinterest, such as “board games,” “animals/pets,” “crafting,” “fashion,”“religion,” “swimming,” etc. In block 620, the processor can obtain asecond set of multiple activities, where the second set of multipleactivities is specified by one or more users of the activity ontology,or is obtained from another platform, such as Facebook, Eventbrite,Songkick, or Meetup.

In block 630, the processor can identify activities relevant to theuser. The processor can match a second activity in the second set ofmultiple activities with the indication of the user's interest bydetermining a second interest to which the second activity belongs anddetermining that the second interest matches the indication of theuser's interest. For example, the processor can obtain the second set ofmultiple activities. The second set of activities can be from anotherplatform where activities in another platform do not correspond toactivities in the activity ontology. Alternatively, the second set ofactivities can be from the same platform but can be from a differentgeographical region and contain different activity names that denote thesame activity but which differ due to regional dialect differences. Theprocessor can map each activity in the second set of multiple activitiesto a corresponding activity analog in the activity ontology. To createthe mapping, the processor can map based on the name of the activity inthe activity ontology, or the activity from another platform can containa tag indicating a corresponding activity or activity analog in theactivity ontology. Based on the activity analog, the processor can mapeach activity in the second set of multiple activities to acorresponding interest. Finally, the processor can match the user'sinterest to the corresponding interest.

The processor matches the second activity, which is the third level ofthe hierarchy, to a corresponding interest, which is the second level ofthe hierarchy, and then matches the user's interests to thecorresponding interests. By mapping an activity to an interest and thenmatching the interests at the second level of the activity ontology,more events become relevant to a particular user, but not too manyevents as compared to mapping to the first level of the activityontology.

The benefit of matching at the second level of the hierarchy isexplained below. For example, an event in the second set of multipleevents contains “calligraphy.” The user has selected “Book Lovers” as aninterest, but has never attended a calligraphy event. If the processorwas just matching the activities associated with the user to“calligraphy,” the processor would not suggest the calligraphy event tothe user. However, in the present case the processor matches the“calligraphy” event to its corresponding interest category, namely,“Book Lovers.” Consequently, because the user has selected “Book Lovers”as an interest, the processor adds the calligraphy event to the user'sevent feed. That way, the user has a broader content of relevant eventsin the event feed.

By contrast, if the processor matches the calligraphy event to the firstlevel of the hierarchy (i.e., group), “calligraphy” would map to thegroup “culture,” which includes a broad range of interests, such as“technology.” Consequently, the processor would suggest the calligraphyevent to a user who has selected technology as an interest and who is,for example, interested in the Java programming language. As a result,the user's event feed would be cluttered with irrelevant anduninteresting events. Therefore, to create a list of relevant activitiesthat is not too cluttered, the processor matches an activity (i.e.,event), to the second level of the hierarchy, namely interest, and thenmatches the interest to the user's interest.

In block 640, based on the matching, the processor can create anindication of suggested activities, including the second activity. Theindication of suggested activities can be the event feed. In block 650,the processor can provide the indication to a user. The indication canbe a list and/or a multimedia presentation of the activities, such as anaudio presentation and/or a video presentation. For example, upondetermining that the second interest matches the indication of theuser's interest, the processor can create a list of suggestedactivities, including the second activity.

The processor can facilitate meetings with friends, whether online or ata geographical location. The processor can obtain multiple friendsassociated with the user. A friend is a person designated as a friendwithin the platform. The processor can receive an indication, includinga period of time when the user is available, and an indication of alocation where the user is available. The location can be a geographicallocation or a location on the Internet. The processor can generate anotification associated with a friend among the multiple friends, wherethe notification indicates the period of time when the user isavailable, the indication of the location where the user is available,and an acceptance indicator that, when selected, indicates that thefriend receiving the notification is available during the period of timeand at the location. The processor can receive a selection of theacceptance indicator, and upon receiving the selection, the processorcan enable creation of an activity indicating that the friend and theuser are together.

The processor can generate a timer associated with the notification,where the timer can indicate when the notification expires. Theprocessor can automatically generate the timer to expire a predeterminedamount of time before the event starts. For example, the processor cancalculate the distance between the user's current location and thelocation of the event, and determine how much time needs to be spent intransportation (e.g., T). The processor can set the timer to expire atthe start of the event end minus T. Alternatively, the processor can setthe timer to expire after some percentage of time has passed during theperiod of time when the user is available. For example, the processorcan set the timer to expire after 50% of the period of time the user isavailable has passed. The processor can determine whether the timer hasexpired and whether a selection of the acceptance indicator has beenreceived. Upon determining that the timer has expired and that theselection of the acceptance indicator has not been received, theprocessor can withdraw the notification from the event feed of theuser's friends.

The processor can enable the user to expand the user's friend group. Forexample, the processor can receive an indication of an activity that theuser is interested in among the list of suggested activities. Based onthe indication, the processor can provide a list of attendees associatedwith the activity to the user. The processor can enable the user toselect one or more attendees in the list of attendees to add to themultiple friends (i.e., the user's friend group). Based on theselection, the processor can add the one or more attendees to themultiple friends associated with the user.

The processor can enable the user to select a group of users who canview the user-created activity. The processor can create a secondactivity and select multiple users who have access to the secondactivity. The multiple users can include a subset of multiple friendsassociated with the user or all users associated with the activityontology.

The processor can provide a functionality to add, delete, and edit eachlevel of the activity ontology. In addition, the processor canautomatically add, delete, and edit each level of the activity ontology.For example, if a particular category at the first, second, third, orfourth level of the activity ontology is not used, the processor canautomatically delete the category. In another example, the processor canperform data mining of the events existing on other platforms on theInternet and can use artificial intelligence to extract relevant eventcategories. The processor can add the event categories to the list ofactivities in the activity ontology.

FIG. 7 is a flowchart of a method to present events of interest to auser on a map. The disclosed system and method provide a web and mobileplatform that enables users to seamlessly find events in which they areinterested, and coordinate attending those events with people they want.In service of providing users with curated events around them, maps 810,820 in FIGS. 8A-8B allow for easy exploration of events pertinent touser interest and in close proximity at the time of decision making.

According to market research, a map of close-by events curated by theuser interests does not exist on any other platform. Everything the usersees on their map of events around them is something that the user hasindicated to the system, either directly or indirectly, that the user isinterested in attending.

In step 700, a hardware or software processor executing the instructionsdescribed in this application can obtain activities relevant to a user.The processor can obtain the activities relevant to the user from theuser, by having the user, for example, select the activities ofinterest, or the interests which are the supergroup of activities in theactivity ontology 100 in FIG. 1 . The user can perform this selectionwhen the user enrolls. Additionally, the user can modify the selectedinterests by adding or removing interests. The user can reset all theinterests at any one point and create a new list of interests.

The processor can also automatically determine activities relevant tothe user. In one example, the processor can use a hierarchical activityontology 100 to determine activities relevant to the user. The processorcan obtain an activity ontology 100 structured into multiplehierarchical levels, including at least three of a group, an interest,an activity, and an activity analog. The group can include multipleinterests, the interest can include multiple activities, the activitycan include multiple activity analogs, and the activity analog caninclude a semantic equivalent of the activity. The processor can obtainan indication of a user's interest associated with the interest in theactivity ontology 100. For example, the user can specify that aninterest in the activity ontology 100 is relevant to the user.

In another example, the processor can determine adjacent activities,namely, activities that the user did not specify as interesting, butthat the user is likely to be interested in. The processor can utilizemachine learning/artificial intelligence to determine adjacentactivities. The processor can obtain an activity relevant to the user.The processor can obtain multiple activities relevant to a second user,where the multiple activities relevant to the second user include theactivity relevant to the user. The processor can determine an adjacentactivity associated with the user by determining the adjacent activityamong the multiple activities relevant to the second user, where theadjacent activity is not included in the multiple activities relevant tothe user. The processor can add the adjacent activity to the firstplurality of activities relevant to the user.

In a third example, the processor can obtain a current time of day, acurrent day of a week, and a history of locations associated with theuser. Based on the current time of day, the current day of the week, andthe history of locations associated with the user, the processor candetermine an activity of interest to the user. For example, historylocations associated with the user can indicate that on Sunday morningthe user tends to go to yoga. The user can also indicate that the useris interested in both coffee and yoga. The current time of day and dayof week can indicate that it is Sunday morning. Based on the currenttime of day and day of the week, the system can suggest yoga, instead ofcoffee. Alternatively, the system can suggest both yoga and coffee, butadjust the rendering of the yoga event icon to be more prominent thanthe coffee event icon on the geographical map.

In step 710 the processor can obtain an indication of a user'sgeographical location, and a predetermined threshold indicating adistance between the user and a particular activity. The predeterminedthreshold can be specified in terms of distance, time or map areavisible to user on a screen. If the predetermined threshold is specifiedin terms of distance, the processor can display the events within thespecified distance of the user's current geographical location. If thepredetermined threshold is specified in terms of map area visible to theuser on a screen, the processor can display the events that areassociated with the locations visible to the user on the screen.

If the predetermined threshold is specified in terms of time, thepredetermined threshold can indicate a length of time, such as 5, 10, or15 minutes. Consequently, each event that the processor displays iswithin the predetermined threshold, such as 5, 10, or 15 minutes awayfrom the user. To find the events within the predetermined threshold,the processor can obtain a speed of movement associated with the user,and the predetermined threshold. Based on the user's geographicallocation, the speed of movement associated with the user and thepredetermined threshold, the processor can calculate the perimeter of anarea surrounding the user's current location which the user can reachwithin the predetermined threshold, such as 5, 10, or 15 minutes. Thespeed of movement of the user can be the current speed of movement orspeed of movement averaged over a predetermined time window, such as 5,10, or 15 minutes. The processor can determine the events that match theuser's interests and satisfy the predetermined threshold, meaning, theprocessor displays the events that match the user's interests and arewithin the predetermined threshold away from the user's geographicallocation when the user moves at the speed of movement associated withthe user.

In step 720, the processor can obtain multiple events, where an eventamong multiple events includes, or is tagged with, one or moreactivities. The one or more activities associated with the multipleevents are included in the activities relevant to the user. Based on theuser's geographical location, and the predetermined threshold, theprocessor can determine a second set of events based on the multipleevents. The second set of multiple events is at least a subset of themultiple events, and a second, pertinent event among the second set ofmultiple events is within the predetermined threshold away from theuser's geographical location.

To obtain multiple events where one or more activities associated withmultiple events are part of the activities relevant to the user, theprocessor can obtain multiple events specified by one or more users ofthe activity ontology 100, or obtained from another platform. Theprocessor can determine an activity associated with events, and aninterest to which the activity belongs. The processor can determinewhether the interest matches the indication of the user's interest. Upondetermining that the interest matches the indication of the user'sinterests, the processor can add the matching events to the multipleevents relevant to the user. Therefore, the processor can match anactivity among the multiple activities with the indication of the user'sinterest, thereby identifying the multiple activities relevant to theuser.

In step 730, the processor can create a geographical map indicating alocation of the second event. To create the geographical map theprocessor can adjust an indication of the location of the second eventbased on an interest associated with the second event. For example, eachevent can have one or more activities that describe the event, where theactivities are part of the activity ontology 100. The activities have acorresponding interest in the activity ontology 100. Each interest canhave a corresponding icon. For example, activities associated with afood interest can have the same icon, including knife and fork,activities associated with coffee can have the same icon, including acup, activities associated with arts and crafts can have scissors as anicon, etc. In another example, each activity can have a special icon,and the event can be represented using an icon of one of the activitiesassociated with the event.

The processor can provide a preview of an event prior to the usercommitting to attend the event. The processor can receive a selection ofthe second event associated with the geographical map. The processor canprovide details associated with the selected event including eventdescription, event location, event date, event time, event activities,and event attendees, as described in FIG. 10 . The processor can adjustan icon indicating the location of the second event to distinguish thesecond event from an unselected event. The processor can enable the userto remove the details associated with the selected event from a display.

The processor can enable the user to specify a time window within whichthe events of interest need to occur. The processor can provide thegeographical map, including the indication of the second event and auser interface configured to receive an indication of time, as describedin FIGS. 11A-11B. The user interface configured to receive indication oftime can be a calendar. The processor can receive the indication of timefrom a user. The processor can determine one or more events occurringwithin the indicated time, and can create the geographical map,including the one or more events.

The processor can enable the user to specify a description associatedwith an activity of interest. The processor can provide a selectionfunctionality associated with the geographical map. The processor canreceive an input indicating a user preference, such as a descriptionassociated with a particular activity. The description of the activitycan be an activity analog, an interest, a natural language descriptionof the activity, or a search word contained in the activity. Thedescription can also include an indication of time, such as date and/ortime, during which the event should occur. Based on the user preference,the processor can select the second event among the second set ofmultiple events, where the second event satisfies the user preference.The processor can create the geographical map, including the indicationof the second event.

In addition to events, the processor can also display the geographicalmap availability of the user to other users who are friends of the user.The processor can obtain multiple friends associated with the user. Theprocessor can receive an indication, including a period of time when theuser is available, and an indication of a location where the user isavailable. The processor can create the geographical map indicating thelocation where the user is available. The processor can render thelocation of the available user using special shading, as shown in FIG.11B. If the period of time when the user is available falls within thedate selected by the user's friend, the processor can render thelocation of the user using special shading. The processor can alsoindicate a period of time during which the user is available on thegeographical map.

FIGS. 8A-8B show a map displaying events of interest. The maps 810, 820can exist within an “explore” tab 890 of the user interface. The exploretab 890 allows users to explore all public/joinable events happening inthe system via a map user interface.

Qualitative research, including concept testing and user researchinterviews, indicates that the map provides significant value to allusers. Further, the qualitative research indicates proximity to eventsis one of the highest predictive indicators as to whether a user willattend an event. In prediction value, the proximity to events is secondonly to whether the user has friends that are going. The explore tab 890provides proximity information as well as attendance information and isin perhaps one of the most information-dense views for a user.Additionally, many users have reported how helpful the maps 810, 820 arewhen traveling to new destinations, and as COVID has been on thedecline, travel, vacation rentals, and hotel bookings have significantlybeen increasing, presenting a unique opportunity to aid the users'willingness to explore new destinations and things to do. The disclosedsystem and method can provide a utility to travelers very much in thesame vein as Google Maps and Uber/Lyft. Even though these applicationsare not exclusively “travel” or “tourism” applications, theseapplications are relied upon by those who are traveling and exploring anew destination.

The icon 800 shows the location of the user. To show the location of theuser, the user device needs to enable global positioning system (GPS).If the user has not enabled GPS, the icon 800 is the center coordinatesof a region that the user has indicated represents the user's position.

The map 810, 820 allows the user to pan, zoom in, and zoom out. In oneembodiment, zooming in and out of the map and panning does not changethe events 830, 840, 850, 860, 880 visible to the user because theevents visible to the user are determined by the user's location and thepredetermined threshold. In another embodiment, zooming in and out ofthe map and panning can change the events 830, 840, 850, 860, 880visible to the user because the system can display the events visible inthe region of the map 810, 820 that is currently visible to the user.The user can easily re-center to the user's location after zooming andpanning around the map, by selecting the re-center icon 805.

A user can see all events that are happening in the platform within thepredetermined threshold in the maps 810, 820. As explained above, thepredetermined threshold can be how far away the event is from the user'scurrent location timewise, distance wise, or how much the user haszoomed in or out of the maps 810, 820. If the predetermined threshold ishow far away the event is from the user's current location timewise ordistance wise, the zoom in or out of the maps or panning 810, 820 doesnot affect the number of events shown, as seen in FIGS. 8A-8B.

The map 810, 820 can display a predetermined number of public/joinableevents that are happening today but which have not yet happened. If theuser has not specified interests associated with the activity ontology100 in FIG. 1 , the map 810, 820 can show all events across allinterests with a start time of “Today”. The system can also display amaximum number of events, such as 100 events. Once the user leaves themap 810, 820, the system can save preferences and filters the user hasspecified, and can reload the preferences and filters next time the userreturns.

A user can quickly scan for events in which the user is interestedthrough the use of interest iconography. For example, every event 830,840, 850, 860, 880 (only five labeled for brevity) has a distinct iconthat indicates an interest associated with the event 830, 840, 850, 860,880. The event 830, 840, 850, 860, 880 can be tagged with one or moreactivities describing the type of event. Each activity associated withthe event 830, 840, 850, 860, 880 has a corresponding interest in theactivity ontology 100. Each interest has a corresponding icon in the map810, 820. Consequently, each event 830, 840, 850, 860, 880 isrepresented using the interest icon associated with the first activitywith which the event is tagged. If the event 830, 840, 850, 860, 880 haszero activities, by, for example, being updated to remove previouslytagged activities, the icon defaults to the “star” interest icon 850.

A user can distinguish between events 830, 840, 850, 860, 880 that theuser has saved and the ones that the user has not saved throughspecialized rendering of icons. For example, the system can render auser's saved event 830 using a hollow iconography state and/or by addingan additional circle 815, to distinguish the saved event 830 from theunsaved event 840, 850, 860, 880, which is shaded in FIGS. 8A-8B.

A user can distinguish between promoted business events and eventscreated by other users through specialized rendering of icons. Forexample, the system can render a promoted event 860 using a specialcolor, such as black, and an additional star icon 870.

A user can preview the event 830, 840, 850, 860, 880 by selecting theevent, such as by tapping on the event. When the user selects the events830, 840, 850, 860, 880, the system can display to the user the eventdetails page, including relevant event details, such as eventdescription, event location, event date/time, event activities, and/orevent attendees. The system can enable the user to go back from theevent details view to the map 810, 820 by making an appropriateselection, such as selecting an appropriate icon (e.g. a “back” button).

For the events 830, 840, 850, 860, 880 on the map 810, 820 that arebeing previewed, the system can display the “active” iconographytreatment to denote the previewed event from everything else. The“active” iconography treatments can include special rendering of theevents 830, 840, 850, 860, 880 icons in a predetermined way, such as byenlarging the events, color coding the event icon, etc. The system candistinguish events that the user has previewed from those that the userhas not yet previewed through color coding the previewed events, such ascoloring the previewed gray as can be seen in event icon 880.

FIG. 9 shows icons used for various events. The icons 900, 910, 920,930, 940, 950, 960, 970, 980, 990, 905, 915 are rendered in differentways visually indicating a state of an event 830, 840, 850, 860, 880 inFIGS. 8A, 8B. The state of an event can be described using a hierarchyof statuses, including a first level status, second level status, andthird level status. The first level status includes an event. The firstlevel status can indicate the state of the event. A second level statuscan include active, visited, saved, promoted. The first level status andthe second level status can be combined into states, including: activeevent, visited event, saved event, promoted event. The first levelstatus, the second level status, and a third level status can becombined into states, including: saved visited event, active promotedevent, promoted event, visited promoted event, saved promoted event, andsaved visited promoted event.

Each status in the hierarchy can have a corresponding visualrepresentation, which in turn can be combined to visually indicate thestate of the events 830, 840, 850, 860, 880. For example, an eventcorresponds to the icon 910.

The “active” second level status has a corresponding visualrepresentation 900 which can be a particular color, such as black,different from the color of the event icon 910. The “visited” secondlevel status has a corresponding visual representation 930 which can bea particular color, such as gray, different from both the color of theevent icon 910 and the color of the active status. The “saved” secondlevel status has a corresponding visual representation 940, which can bea colored circle around the event icon 910. The “promoted” second levelstatus has a corresponding visual representation 960 which can be aspecial object, such as a star, added to the perimeter of the event icon910. In addition, the “promoted” second level status can be color-coded,such as by adding a particular color shading to the event icon 910. Thecolor of the special object can match the color coding of the icon.

The “save visited event” third level status has a corresponding visualrepresentation 940, which is a combination of the “saved” visualrepresentation and “visited” visual representation. Namely, the “savedvisited event” is color-coded to match the color of the “saved” visualrepresentation and has a circle around the event icon. The color of thecircle corresponds to the color of the “saved” visual representation.

The “active promoted event” third level status has a correspondingvisual representation 950, which is a combination of the “active” visualrepresentation and “promoted” visual representation. Namely, the “activepromoted event” is color-coded to match the color of the “active” visualrepresentation and has the special object indicating that the event ispromoted.

The “visited promoted event” third level status has a correspondingvisual representation 970, which is a combination of the “visited”visual representation and “promoted” visual representation. Namely, the“visited promoted event” is color-coded to match the color of the“visited” visual representation, and has the special object indicatingthat the event is promoted.

The “saved promoted event” third level status has a correspondingrepresentation 980, which is a combination of “saved” visualrepresentation and “promoted” visual representation. Namely, the “savedpromoted event” has a circle around the event icon 910, and the specialobject indicating that the event is promoted. The “saved promoted event”can also have the particular shading indicating that the event ispromoted.

The “saved visited promoted event” third level status has acorresponding representation 990, which is a combination of “saved”visual representation, “visited” visual representation, and “promoted”visual representation. Namely, “saved visited promoted event” has acircle around the event icon 910, is color-coded to reduce correspondingto the “visited” visual representation, and has the special objectindicating that the event is promoted.

In addition, icons 905 and 915 represent user's friends. The icons 905,915 can include an image of the user's friend. Icon 915 is color-codedto indicate that the user represented by the icon 915 is available asexplained in step 305 in FIG. 3 . The icon 915 can be color-coded toindicate availability if the user's friend associated with the icon 915is available any time within a date specified by the user. The date canbe the current date or some date in the future.

FIG. 10 shows an event details page. The user interface 1070 can displaythe event details page 1000 with the geographical map 1010. The eventdetails page 1000 can include event description 1020, event location1030, event date/time 1040, activities associated with the event 1050,and attendees 1060. The user can exit viewing the event details page1000 by selecting any point on the geographical map 1010, or byselecting a different functionality of the user interface 1070, such asthe explore tab 1080.

FIGS. 11A-11B show the user interface enabling a user to filter eventsby date and time. A user can filter the events by a specific date. FIG.11A shows a default filter 1100, namely, the default date superimposedon a geographical map 1110. The system applies the default filter 1100if the user does not make a date selection. The default filter 1100 istoday's date. Date formatting of the default filter 1100 depends on thedevice locale, for example, Feb. 22, 2021 in the United States vs. 22Feb. 2021 in Europe.

Filtering by a specific date shows events that have a run time thatoccurs anytime within the specific date contained in the filter. Forexample, a user may filter for events on Feb. 22, 2021. An event maystart on Feb. 21, 2022 at 11:00 p.m. and run through Feb. 22, 2021 at4:00 a.m. Even though the start time of the event is before the userselected date, the system still displays the event when the filter isFeb. 22, 2021.

FIG. 11B shows a date picker 1120 superimposed on a geographical map1130. The date picker 1120 can include a calendar widget 1140, “Go totoday” filter 1150, and “Happening soon” widget 1160. The calendarwidget 1140 can allow the user to select a date 1170. The calendarwidget 1140 can update the display to show the date 1170 user selected,such as by adding an additional circle as shown in FIG. 11B. Uponselection, the calendar widget 1140 can show the date selected 1170 inthe user interface element 1180. Based on the selected date, the systemcan display events occurring on the selected date.

The next time the user opens the date picker 1120, the system candisplay events occurring on the selected date. In addition, the systemcan provide a “Go to today” filter 1150 allowing the user to view theevents that are happening on the current day.

Selecting the “Happening soon” widget 1160 can show events that arehappening now or starting within a predetermined period of time, such asthe next four hours. Once the user selects “Happening soon” widget 1160,the system updates the geographical map 1130 to show events that arehappening soon. The next time the user opens the date picker 1120, thesystem can display events that were displayed when “Happening soon” wasselected. In addition, the system can provide a “Go to today” filter1150 allowing the user to view the events that are happening on thecurrent day.

Computer System

FIG. 12 is a block diagram that illustrates an example of a computersystem 1200 in which at least some operations described herein can beimplemented. As shown, the computer system 1200 can include: one or moreprocessors 1202, main memory 1206, non-volatile memory 1210, a networkinterface device 1212, video display device 1218, an input/output device1220, a control device 1222 (e.g., keyboard and pointing device), adrive unit 1224 that includes a storage medium 1226, and a signalgeneration device 1230, that are communicatively connected to a bus1216. The bus 1216 represents one or more physical buses and/orpoint-to-point connections that are connected by appropriate bridges,adapters, or controllers. Various common components (e.g., cache memory)are omitted from FIG. 12 for brevity. Instead, the computer system 1200is intended to illustrate a hardware device on which componentsillustrated or described (relative to the examples of the figures) andany other components described in this specification can be implemented.

The computer system 1200 can take any suitable physical form. Forexample, the computing system 1200 can share a similar architecture asthat of a server computer, personal computer (PC), tablet computer,mobile telephone, game console, music player, wearable electronicdevice, network-connected (“smart”) device (e.g., a television or homeassistant device), AR/VR systems (e.g., head-mounted display), or anyelectronic device capable of executing a set of instructions thatspecify action(s) to be taken by the computing system 1200. In someimplementation, the computer system 1200 can be an embedded computersystem, a system-on-chip (SOC), a single-board computer system (SBC), ora distributed system, such as a mesh of computer systems, or include oneor more cloud components in one or more networks. Where appropriate, oneor more computer systems 1200 can perform operations in real-time, nearreal-time, or in batch mode.

The network interface device 1212 enables the computing system 1200 tomediate data in a network 1214 with an entity that is external to thecomputing system 1200 through any communication protocol supported bythe computing system 1200 and the external entity. Examples of thenetwork interface device 1212 include a network adaptor card, a wirelessnetwork interface card, a router, an access point, a wireless router, aswitch, a multilayer switch, a protocol converter, a gateway, a bridge,bridge router, a hub, a digital media receiver, and/or a repeater, aswell as all wireless elements noted herein.

The memory (e.g., main memory 1206, non-volatile memory 1210,machine-readable medium 1226) can be local, remote, or distributed.Although shown as a single medium, the machine-readable medium 1226 caninclude multiple media (e.g., a centralized/distributed database and/orassociated caches and servers) that store one or more sets ofinstructions 1228. The machine-readable (storage) medium 1226 caninclude any medium that is capable of storing, encoding, or carrying aset of instructions for execution by the computing system 1200. Themachine-readable medium 1226 can be non-transitory or comprise anon-transitory device. In this context, a non-transitory storage mediumcan include a device that is tangible, meaning that the device has aconcrete physical form, although the device can change its physicalstate. Thus, for example, non-transitory refers to a device remainingtangible despite this change in state.

Although implementations have been described in the context of fullyfunctioning computing devices, the various examples are capable of beingdistributed as a program product in a variety of forms. Examples ofmachine-readable storage media, machine-readable media, orcomputer-readable media include recordable-type media, such as volatileand non-volatile memory devices 1210, removable flash memory, hard diskdrives, optical disks, and transmission-type media, such as digital andanalog communication links.

In general, the routines executed to implement examples herein can beimplemented as part of an operating system or a specific application,component, program, object, module, or sequence of instructions(collectively referred to as “computer programs”). The computer programstypically comprise one or more instructions (e.g., instructions 1204,1208, 1228) set at various times in various memory and storage devicesin computing device(s). When read and executed by the processor 1202,the instruction(s) cause the computing system 1200 to perform operationsto execute elements involving the various aspects of the disclosure.

Remarks

The terms “example,” “embodiment,” and “implementation” are usedinterchangeably. For example, references to “one example” or “anexample” in the disclosure can be, but not necessarily are, referencesto the same implementation; and, such references mean at least one ofthe implementations. The appearances of the phrase “in one example” arenot necessarily all referring to the same example, nor are separate oralternative examples mutually exclusive of other examples. A feature,structure, or characteristic described in connection with an example canbe included in another example of the disclosure. Moreover, variousfeatures are described which can be exhibited by some examples and notby others. Similarly, various requirements are described which can berequirements for some examples but not other examples.

The terminology used herein should be interpreted in its broadestreasonable manner, even though it is being used in conjunction withcertain specific examples of the invention. The terms used in thedisclosure generally have their ordinary meanings in the relevanttechnical art, within the context of the disclosure, and in the specificcontext where each term is used. A recital of alternative language orsynonyms does not exclude the use of other synonyms. Specialsignificance should not be placed upon whether a term is elaborated ordiscussed herein. The use of highlighting has no influence on the scopeand meaning of a term. Further, it will be appreciated that the samething can be said in more than one way.

Unless the context clearly requires otherwise, throughout thedescription and the claims, the words “comprise,” “comprising,” and thelike are to be construed in an inclusive sense, as opposed to anexclusive or exhaustive sense; that is to say, in the sense of“including, but not limited to.” As used herein, the terms “connected,”“coupled,” or any variant thereof means any connection or coupling,either direct or indirect, between two or more elements; the coupling orconnection between the elements can be physical, logical, or acombination thereof. Additionally, the words “herein,” “above,” “below,”and words of similar import can refer to this application as a whole andnot to any particular portions of this application. Where contextpermits, words in the above Detailed Description using the singular orplural number may also include the plural or singular number,respectively. The word “or” in reference to a list of two or more itemscovers all of the following interpretations of the word: any of theitems in the list, all of the items in the list, and any combination ofthe items in the list. The term “module” refers broadly to softwarecomponents, firmware components, and/or hardware components.

While specific examples of technology are described above forillustrative purposes, various equivalent modifications are possiblewithin the scope of the invention, as those skilled in the relevant artwill recognize. For example, while processes or blocks are presented ina given order, alternative implementations can perform routines havingsteps, or employ systems having blocks, in a different order, and someprocesses or blocks may be deleted, moved, added, subdivided, combined,and/or modified to provide alternative or sub-combinations. Each ofthese processes or blocks can be implemented in a variety of differentways. Also, while processes or blocks are at times shown as beingperformed in series, these processes or blocks can instead be performedor implemented in parallel or can be performed at different times.Further, any specific numbers noted herein are only examples such thatalternative implementations can employ differing values or ranges.

Details of the disclosed implementations can vary considerably inspecific implementations while still being encompassed by the disclosedteachings. As noted above, particular terminology used when describingfeatures or aspects of the invention should not be taken to imply thatthe terminology is being redefined herein to be restricted to anyspecific characteristics, features, or aspects of the invention withwhich that terminology is associated. In general, the terms used in thefollowing claims should not be construed to limit the invention to thespecific examples disclosed herein, unless the above DetailedDescription explicitly defines such terms. Accordingly, the actual scopeof the invention encompasses not only the disclosed examples but alsoall equivalent ways of practicing or implementing the invention underthe claims. Some alternative implementations can include additionalelements to those implementations described above or include fewerelements.

Any patents, applications, and other references noted above, and anythat may be listed in accompanying filing papers, are incorporatedherein by reference in their entireties, except for any subject matterdisclaimers or disavowals, and except to the extent that theincorporated material is inconsistent with the express disclosureherein, in which case the language in this disclosure controls. Aspectsof the invention can be modified to employ the systems, functions, andconcepts of the various references described above to provide yetfurther implementations of the invention.

To reduce the number of claims, certain implementations are presentedbelow in certain claim forms, but the applicant contemplates variousaspects of an invention in other forms. For example, aspects of a claimcan be recited in a means-plus-function form or in other forms, such asbeing embodied in a computer-readable medium. A claim intended to beinterpreted as a mean-plus-function claim will use the words “meansfor.” However, the use of the term “for” in any other context is notintended to invoke a similar interpretation. The applicant reserves theright to pursue such additional claim forms in either this applicationor in a continuing application.

I/We claim:
 1. A method comprising: obtaining an activity ontologystructured into multiple hierarchical levels including a group, aninterest, an activity, and an activity analog, wherein the groupincludes a first plurality of interests, wherein the interest includes afirst plurality of activities, wherein the activity includes a firstplurality of activity analogs, wherein the activity analog includes asemantic equivalent of the activity, wherein the activity analog variesbased on a geographical location; obtaining an indication of a user'sinterest; obtaining a second plurality of activities, wherein the secondplurality of activities is specified by one or more users of theactivity ontology, or wherein the second plurality of activities isobtained from another platform; matching a second activity in the secondplurality of activities with the indication of the user's interest,thereby identifying relevant activities, by: determining a secondinterest to which the second activity belongs; determining whether thesecond interest matches the indication of the user's interest; upondetermining that the second interest matches the indication of theuser's interest, creating an indication of suggested activitiesincluding the second activity; and providing the indication of suggestedactivities to the user.
 2. The method of claim 1, comprising: obtainingmultiple friends associated with the user; receiving an indicationincluding a period of time when the user is available, and an indicationof a location where the user is available; generating a notificationassociated with a friend among the multiple friends, wherein thenotification indicates the period of time when the user is available,the indication of the location where the user is available, and anacceptance indicator that when selected indicates that the friendreceiving the notification is available during the period of time and atthe location; receiving a selection of the acceptance indicator; andupon receiving the selection of the acceptance indicator, enablingcreation of an activity indicating that the friend and the user aretogether.
 3. The method of claim 1, comprising: obtaining multiplefriends associated with the user; receiving an indication including aperiod of time when the user is available, and an indication of alocation where the user is available; generating a timer and anotification associated with a friend among the multiple friends,wherein the notification indicates the period of time when the user isavailable, the indication of the location where the user is available,and an acceptance indicator that when selected indicates that the friendreceiving the notification is available during the period of time and atthe location, wherein the timer indicates when the notification expires;determining whether the timer has expired and whether a selection of theacceptance indicator has been received; and upon determining that thetimer has expired and that the selection of the acceptance indicator hasnot been received, withdrawing the notification.
 4. The method of claim1, comprising: receiving an indication of a third activity in which theuser is interested among the list of suggested activities; based on theindication, providing a list of attendees associated with the thirdactivity to the user; enabling the user to select one or more attendeesin the list of attendees to add to multiple friends; and based on theselection, adding the one or more attendees to the multiple friendsassociated with the user.
 5. The method of claim 1, comprising: enablingthe user to create a third activity and to select a plurality of userswho have access to the third activity, wherein the plurality of usersincludes a subset of multiple friends associated with the user or allusers associated with the activity ontology.
 6. The method of claim 1,comprising: adjusting the activity analog associated with the activitybased on pronunciation, spelling, or dialect associated with thegeographical location associated with the user.
 7. At least onecomputer-readable storage medium, excluding transitory signals andcarrying instructions, which, when executed by at least one dataprocessor of a system, causes the system to: obtain an activity ontologystructured into multiple hierarchical levels including at least three ofa group, an interest, an activity, and an activity analog, wherein thegroup includes a first plurality of interests, wherein the interestincludes a first plurality of activities, wherein the activity includesa first plurality of activity analogs, wherein the activity analogincludes a semantic equivalent of the activity; obtain an indication ofa user's interest; obtain a second plurality of activities, wherein thesecond plurality of activities is specified by one or more users of theactivity ontology, or wherein the second plurality of activities isobtained from another platform; match a second activity in the secondplurality of activities with the indication of the user's interest,thereby identifying relevant activities, by: determining a secondinterest to which the second activity belongs; determining whether thesecond interest matches the indication of the user's interest; upondetermining that the second interest matches the indication of theuser's interest, create an indication of suggested activities includingthe second activity; and provide the indication of suggested activitiesto the user.
 8. The computer-readable storage medium of claim 7,comprising the instructions to: obtain multiple friends associated withthe user; receive an indication including a period of time when the useris available, and an indication of a location where the user isavailable; generate a notification associated with a friend among themultiple friends, wherein the notification indicates the period of timewhen the user is available, the indication of the location where theuser is available, and an acceptance indicator that when selectedindicates that the friend receiving the notification is available duringthe period of time and at the location; receive a selection of theacceptance indicator; and upon receiving the selection of the acceptanceindicator, enable creation of an activity indicating that the friend andthe user are together.
 9. The computer-readable storage medium of claim7, comprising the instructions to: obtain multiple friends associatedwith the user; receive an indication including a period of time when theuser is available, and an indication of a location where the user isavailable; generate a timer and a notification associated with a friendamong the multiple friends, wherein the notification indicates theperiod of time when the user is available, the indication of thelocation where the user is available, and an acceptance indicator thatwhen selected indicates that the friend receiving the notification isavailable during the period of time and at the location, wherein thetimer indicates when the notification expires; determine whether thetimer has expired and whether a selection of the acceptance indicatorhas been received; and upon determining that the timer has expired andthat the selection of the acceptance indicator has not been received,withdrawing the notification.
 10. The computer-readable storage mediumof claim 7, comprising the instructions to: receive an indication of athird activity in which the user is interested among the list ofsuggested activities; based on the indication, provide a list ofattendees associated with the third activity to the user; enable theuser to select one or more attendees in the list of attendees to add tomultiple friends; and based on the selection, add the one or moreattendees to the multiple friends associated with the user.
 11. Thecomputer-readable storage medium of claim 7, comprising the instructionsto: enable the user to create a third activity and to select a pluralityof users who have access to the third activity, wherein the plurality ofusers includes a subset of multiple friends associated with the user orall users associated with the activity ontology.
 12. Thecomputer-readable storage medium of claim 7, comprising the instructionsto: adjust the activity analog associated with the activity based onpronunciation, spelling, or dialect associated with a geographicallocation associated with the user.
 13. The computer-readable storagemedium of claim 7, wherein instructions to match the second activity inthe second plurality of activities with the indication of the user'sinterest comprise the instructions to: obtain the second plurality ofactivities from the another platform; map each activity in the secondplurality of activities to a corresponding activity analog; based on theactivity analog, map each activity in the second plurality of activitiesto a corresponding interest; and match the user's interest to thecorresponding interest.
 14. A system comprising: at least one hardwareprocessor; and at least one non-transitory memory storing instructions,which, when executed by the at least one hardware processor, cause thesystem to: obtain an activity ontology structured into multiplehierarchical levels including at least three of a group, an interest, anactivity, and an activity analog, wherein the group includes a firstplurality of interests, wherein the interest includes a first pluralityof activities, wherein the activity includes a first plurality ofactivity analogs, wherein the activity analog includes a semanticequivalent of the activity; obtain an indication of a user's interest;obtain a second plurality of activities, wherein the second plurality ofactivities is specified by one or more users of the activity ontology,or wherein the second plurality of activities is obtained from anotherplatform; match a second activity in the second plurality of activitieswith the indication of the user's interest by: determining a secondinterest to which the second activity belongs; and determining that thesecond interest matches the indication of the user's interest; based onthe matching, create an indication of suggested activities including thesecond activity; and provide the indication of suggested activities to auser.
 15. The system of claim 14, comprising the instructions to: obtainmultiple friends associated with the user; receive an indicationincluding a period of time when the user is available, and an indicationof a location where the user is available; generate a notificationassociated with a friend among the multiple friends, wherein thenotification indicates the period of time when the user is available,the indication of the location where the user is available, and anacceptance indicator that when selected indicates that the friendreceiving the notification is available during the period of time and atthe location; receive a selection of the acceptance indicator; and uponreceiving the selection of the acceptance indicator, enable creation ofan activity indicating that the friend and the user are together. 16.The system of claim 14, comprising the instructions to: obtain multiplefriends associated with the user; receive an indication including aperiod of time when the user is available, and an indication of alocation where the user is available; generate a timer and anotification associated with a friend among the multiple friends,wherein the notification indicates the period of time when the user isavailable, the indication of the location where the user is available,and an acceptance indicator that when selected indicates that the friendreceiving the notification is available during the period of time and atthe location, wherein the timer indicates when the notification expires;determine whether the timer has expired and whether a selection of theacceptance indicator has been received; and upon determining that thetimer has expired and that the selection of the acceptance indicator hasnot been received, withdraw the notification.
 17. The system of claim14, comprising the instructions to: receive an indication of a thirdactivity in which the user is interested among the list of suggestedactivities; based on the indication, provide a list of attendeesassociated with the third activity to the user; enable the user toselect one or more attendees in the list of attendees to add to multiplefriends; and based on the selection, add the one or more attendees tothe multiple friends associated with the user.
 18. The system of claim14, comprising the instructions to: enable the user to create a thirdactivity and to select a plurality of users who have access to the thirdactivity, wherein the plurality of users includes a subset of multiplefriends associated with the user or all users associated with theactivity ontology.
 19. The system of claim 14, comprising theinstructions to: adjust the activity analog associated with the activitybased on pronunciation, spelling, or dialect associated with ageographical location associated with the user.
 20. The system of claim14, wherein instructions to match the second activity in the secondplurality of activities with the indication of the user's interestcomprise the instructions to: obtain the second plurality of activitiesfrom the another platform; map each activity in the second plurality ofactivities to a corresponding activity analog; based on the activityanalog, map each activity in the second plurality of activities to acorresponding interest; and match the user's interest to thecorresponding interest.
 21. The system of claim 14, comprising theinstructions to: provide a functionality to add, delete, and edit eachlevel of the activity ontology.